/**
 * createRouter 这个为创建路由的方法
 * createWebHashHistory 这个就是vue2中路由的模式， 这里的是hash模式，这个还可以是createWebHistory等
 * RouteRecordRaw 这个为要添加的路由记录，也可以说是routes的ts类型
 */
import {
    createRouter,
    createWebHistory,
    RouteRecordRaw
} from "vue-router"

import NProgress from '@/utils/nprogress'
import Home from '@/views/home/Home.vue'
import Logistics from '@/views/logistics/logistics.vue'
import {getBrandListApi} from "@/api/modules/base";
import {useBaseStore} from "@/store";

// 路由记录
const routes: Array<RouteRecordRaw>  = [
    {
        path: '/',
        name: 'index',
        component: Home,
        meta:{
            title: 'Customs Management Dashboard'
        }
    },
    {
        path: '/logistics',
        name: 'logistics',
        component: Logistics,
        meta:{
            title: 'Logistics Node Management'
        }
    },
]

const router = createRouter({
    history: createWebHistory(),
    routes
})

/**
 * @description 路由拦截 beforeEach
 * */
router.beforeEach(async (to, from, next) => {
    const baseStore = useBaseStore()
    // 1.NProgress 开始
    NProgress.start()
    // 2.动态设置标题
    document.title = to.meta.title
    // 获取品牌列表
    if (baseStore.brandInfo.length <=0) {
        const {data} = await getBrandListApi()
        // 存储 品牌列表
        baseStore.setBrandInfo(data)
    }
    // 正常访问页面
    next()
})

/**
 * @description 路由跳转错误
 * */
router.onError((error) => {
    NProgress.done()
})

/**
 * @description 路由跳转结束
 * */
router.afterEach(() => {
    NProgress.done()
})

export default router;
